package com.example.myaudiorecord;

import android.util.LruCache;

public class AudioRecordLruCache {
    // 初始化一个 LruCache，用于存储 PCM 数据
    private static LruCache<Object, byte[]> pcmCache;

    public AudioRecordLruCache() {
        // 计算可用最大内存
        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

        // 设置缓存大小为最大内存的1/8
        final int cacheSize = maxMemory / 8;

        // 初始化 LruCache
        pcmCache = new LruCache<Object, byte[]>(cacheSize) {
            protected int sizeOf(Object key, byte[] value) {
                // 返回每个条目的大小，这里简单地返回字节数
                return value.length / 1024; // 返回值以 KB 为单位
            }
        };
    }

    // 将 PCM 数据存入缓存
    public void addPcmToCache(Object key, byte[] pcmData) {
        if (getPcmFromCache(key) == null) {
            pcmCache.put(key, pcmData);
        }
    }

    // 从缓存中获取 PCM 数据
    public  byte[] getPcmFromCache(Object key) {
        return pcmCache.get(key);
    }

    // 清空缓存
    public void clearCache() {
        pcmCache.evictAll();
    }
}
